 # -*- coding: utf-8 -*-
import socket, time
from damas import impl, utils, jogadores
from damas.utils import Struct

def formata_mvto(jogador,mvto):
    return '%s:%s%s-%s%s' % (jogador,mvto[0][0], mvto[0][1], mvto[1][0], mvto[1][1])

HOST = '127.0.0.1'     
PORT = 50007  
s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind((HOST, PORT))
s1.listen(1)
print "aguardando primeiro jogador..."
conn1, addr1 = s1.accept()
print 'jogador 1 connectado pelo endereço ', addr1
print "aguardando segundo jogador..."
conn2, addr2 = s1.accept()
print 'jogador 2 connectado pelo endereço ', addr1


jogo = impl.Checkers(impl.PRETO)
estado = jogo.inicio
movimento_s = "Comece"
while 1:
    
    try:

        conn1.send(movimento_s)
        conn1.send(str(estado))
        movimento = conn1.recv(1024)
        print estado.to_movimento
        movimento_s = formata_mvto(estado.to_movimento,eval(movimento))
        print "Jogador1: %s" % movimento_s
        estado = jogo.faz_movimento(eval(movimento), estado)
        time.sleep(1)

        conn2.send(movimento_s)
        conn2.send(str(estado))
        movimento = conn2.recv(1024)
        movimento_s = formata_mvto(estado.to_movimento,eval(movimento))
        print "Jogador2: %s" % movimento_s
        estado = jogo.faz_movimento(eval(movimento), estado)
        time.sleep(1)

        if jogo.acaba(estado):
            print "fim"
            #jogo.modo_texto(estado)
    except:
        print "houve um erro na conexão, o programa será fechado"
        conn1.close()
        conn2.close()
        s1.close()
        break
